我最近开始使用pthread_setname_np()在我的应用程序中设置一些线程名称。执行此操作后,如果在其中一个命名线程中发生崩溃,则核心转储文件名将获取线程名称而不是具有core_pattern%e.%p.core的可执行文件名称根据coremanpage,core_pattern中的%e标志应该扩展为可执行文件名称。它没有说明线程名称。我想要可执行文件名称而不是线程名称,因为我有其他自动化脚本(不是我维护的)依赖于以应用程序名称开头的核心文件名。这是pthread_setname_np()或core_pattern中的错误吗?我在LinuxCentOS6.7上运行。
我有一个用C++编写的测试应用程序,它在main()中启动多个线程,然后永远在main()中休眠。其中一个线程正在执行导致段错误的操作并生成核心转储(之前设置了ulimit-cunlimited)。我正在用gdb打开核心,然后用threadapplyallbt或infothreads查看我只有一个线程(已启动在main()中),这是不可能的,因为至少main()线程也应该运行。问题是其余的线程怎么可能丢失,是什么原因造成的?这个孤独线程的回溯看起来还不错,里面没有奇怪的东西。操作系统是RedHatEnterprise5.3,gdb-6.8。 最佳答案
Coredump上的维基百科页面说InUnix-likesystems,coredumpsgenerallyusethestandardexecutableimage-format:a.outinolderversionsofUnix,ELFinmodernLinux,SystemV,Solaris,andBSDsystems,Mach-OinOSX,etc.这是否意味着核心转储本身是可执行的?如果不是,为什么不呢?编辑:因为@WumpusQ.Wumbley在评论中提到了coredump_filter,也许上面的问题应该是:可以生成一个核心转储,这样它就可以被执行本身?
我正在将SVN存储库从Windows机器(Windows7)移动到Linux机器(Ubuntu13)。我使用svnadmindump将存储库转储到Windows上,并将文件复制到Linux机器上。现在我在运行svnadminloaddest-folder终端响应'vnadmin:E140001:Malformeddumpfileheader'SVN-fs-dump-format-version:2我怀疑我的字符编码有问题(Windows与Unix),因为单引号从行尾(它应该在的位置)到行首。但是我已经尝试在Notepad++中转换字符编码,但我只收到不同的错误。当我使用UTF-8编码时
apache2配置测试失败。配置测试的输出是:Segmentationfault(coredumped)Action'configtest'failed.TheApacheerrorlogmayhavemoreinformation.------------------------------------------------Errorlogs:-[mpm_prefork:notice][pid30111]AH00163:Apache/2.4.23(Ubuntu)configured--resumingnormaloperations[core:notice][pid30111]AH
我正在寻找一个小的shell脚本,它将接收任何通过管道传输到其中的内容,并将其转储到一个文件中……用于电子邮件调试目的。有什么想法吗? 最佳答案 unix命令tee可以做到这一点。mantee 关于linux-将管道输入转储到文件的简单方法是什么?(Linux),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/76700/
我只想在不停止程序的情况下转储核心。这本质上是序列化程序的整个状态。非常方便后面调试的东西。linux下可以吗? 最佳答案 我找到了简单的解决方案:$gcoreusage:gcore[-ofilename]pid它与gdb一起分发。 关于linux-是否可以通过核心转储定期保存程序状态?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1530948/
我正在尝试使用crash实用程序分析我的ubuntu机器上的故障转储,如下所示$sudocrash/boot/System.map-3.2.0-23-generic-pae/boot/vmlinuz-3.2.0-23-generic-pae_usr_sbin_ietd.0.crash但它返回错误为crash:/boot/vmlinuz-3.2.0-23-generic-pae:notasupportedfileformat根据崩溃实用程序语法,我已正确提供参数crashcoredump我在这里做错了什么?更新:启动目录中的vmlinuz文件似乎是bzimage压缩的$filevmlin
最近我注意到我的应用程序生成的核心转储的大小有所增加。最初,它们的大小只有5MB左右,包含大约5个堆栈帧,现在我有超过2GB的核心转储,其中包含的信息与较小的转储没有什么不同。有什么方法可以控制生成的核心转储的大小?它们不应该至少小于应用程序二进制文件本身吗?二进制文件是这样编译的:在带有调试的Release模式下编译符号(即-g中的编译器选项海合会)。调试符号被复制到单独的文件并从中剥离二进制。添加了GNU调试符号链接(symboliclink)到二进制文件。在应用程序的开头,调用setrlimit将核心限制设置为无穷大--这是问题所在吗? 最佳答案
我有一个在CentOS下运行的服务器应用程序。服务器每秒响应许多请求,但每隔一小时左右就会反复崩溃并创建一个故障转储文件。情况真的很糟糕,我需要尽快找出坠机原因。我怀疑问题是并发问题,但我不确定。我可以访问源代码和故障转储文件,但我不知道如何使用故障转储来查明问题。非常感谢任何建议。 最佳答案 首先要查找的是程序崩溃时收到的错误消息。这通常会告诉您发生了什么样的错误。例如“segmentationfault”或“SIGSEGV”几乎肯定意味着您的程序已经取消引用NULL或其他无效指针。如果程序是用C++编写的,那么错误消息通常会告诉